package com.xinke.module.system.model.vo.user;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 菜单权限 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MenuRespVO {

    @Schema(description = "菜单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32706")
    @ExcelProperty("菜单ID")
    private Long menuId;

    @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("菜单名称")
    private String menuName;

    @Schema(description = "权限标识", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("权限标识")
    private String menuPermission;

    @Schema(description = "菜单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("菜单类型")
    private Integer menuType;

    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("显示顺序")
    private Integer showSort;

    @Schema(description = "父菜单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26919")
    @ExcelProperty("父菜单ID")
    private Long parentId;

    @Schema(description = "路由地址")
    @ExcelProperty("路由地址")
    private String routerPath;

    @Schema(description = "菜单图标")
    @ExcelProperty("菜单图标")
    private String menuIcon;

    @Schema(description = "组件路径")
    @ExcelProperty("组件路径")
    private String componentPath;

    @Schema(description = "组件名", example = "王五")
    @ExcelProperty("组件名")
    private String componentName;

    @Schema(description = "菜单状态(1启用 0禁用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("菜单状态(1启用 0禁用)")
    private Integer menuStatus;

    @Schema(description = "是否可见", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否可见")
    private Integer visible;

    @Schema(description = "是否缓存", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否缓存")
    private Integer keepAlive;

    @Schema(description = "是否总是显示", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否总是显示")
    private Integer alwaysShow;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}